約 1,390,613 件
https://w.atwiki.jp/kenichiro/pages/34.html
行列掛け算法による最短距離の計算をするプログラム。 #一行に"元のnode 行き先のnode length"としているファイルを読み込み #そこから行列掛け算法を用いてノード間最短距離を求める class Times_matrix def initialize # nodeに番号をふるhash @node = Hash.new # ノード間の距離行列 @matrix = Array.new File.open(ARGV[0]) do |file| i = 0 # ファイルからのノード間距離の読み込み while text = file.gets do graph = text.split(" ") if @node[graph[0]] == nil then @node[graph[0]] = i i += 1 end if @node[graph[1]] == nil then @node[graph[1]] = i i += 1 end from = @node[graph[0]] to = @node[graph[1]] @matrix[from] = Array.new if @matrix[from] == nil @matrix[from][to] = graph[2].to_i end #繋がっていないノード間をinfinityにする @node.length.times do |i| @matrix[i][i] = 0 @node.length.times do |j| @matrix[i][j] = 1/0.0 if @matrix[i][j] == nil end end end end def calculate # 掛け算の反復回数 n = @node.length - 1 n.times{one_step} end # 行列掛け算法 def one_step new_matrix = Array.new n = @node.length n.times do |i| new_matrix[i] = Array.new n.times do |j| path = Array.new n.times do |k| l = @matrix[i][k] + @matrix[k][j] path.push l end min_l = 1/0.0 # 最小のpathを選ぶ path.each{|l| min_l = l if min_l = l} new_matrix[i][j] = min_l end end @matrix = new_matrix end # ノード間の最短距離を表示 def print_min n = @node.length n.times do |i| from = @node.index(i) n.times do |j| to = @node.index(j) next if i == j print "#{from}から#{to}への最短距離は#{@matrix[i][j]}\n" end end end end a = Times_matrix.new a.calculate a.print_min 因数で与えるファイルは 元のノード 行き先のノード エッジの長さ をスペース区切りで一行ずつ描いておく。 例えばこんな感じ a b 1 a c 3 a d 6 b c 1 c b 5 c d 1 d a 1 d c 5 実行すると次のようになる aからbへの最短距離は1 aからcへの最短距離は2 aからdへの最短距離は3 bからaへの最短距離は3 bからcへの最短距離は1 bからdへの最短距離は2 cからaへの最短距離は2 cからbへの最短距離は3 cからdへの最短距離は1 dからaへの最短距離は1 dからbへの最短距離は2 dからcへの最短距離は3
https://w.atwiki.jp/kogo/pages/7.html
rubyのべんりなscriptxmlを解析する 置換する excelファイルをテキストに変換 excelファイルをgrep rubyのべんりなscript xmlを解析する こんなxmlを解析するrubyスクリプト guitars title="My Guitars" make name="Fender" model sn="123456789" year="2006" country="japan" name 62 Reissue Stratocaster /name price 750.00 /price color Fiesta Red /color /model model sn="112233445" year="2007" country="mexico" name 60s Reverse Headstock Stratocaster /name price 699.00 /price color Olympic White /color /model /make make name="Squier" model sn="445322344" year="2003" country="China" name Standard Stratocaster /name price 179.99 /price color Cherry Sunburst /color /model /make /guitars require "rexml/document" include REXML # so that we don’t have to prefix everything # with REXML ... doc = Document.new File.new("guitars.xml") #全て表示する #print doc #名前を全て表示する doc.elements.each("guitars/make/model/name"){ |element| puts element.text } #価格を全て取り出して合計する total = 0 doc.elements.each("guitars/make/model/price") { |element| total += element.text.to_i } puts "Total is $" + total.to_s #属性yearを全て表示 XPath.each( doc, "//model/attribute year"){ |element| puts element } 置換する ruby -i.bak rep.rb data.txtって書くと、data.txtにある文字列を置換する。 元のファイルはrep.txt.bakという名前で保存される。 #rep.rb 置換する while gets gsub(/INITIAL *[0-9]*K *NEXT *[0-9]*K/, INITIAL 8K NEXT 8K ) print end excelファイルをテキストに変換 #! C \ruby-1.8\bin require win32ole fname = ARGV[0] def getAbsolutePath filename fso = WIN32OLE.new( Scripting.FileSystemObject ) return fso.GetAbsolutePathName(filename) end filename = getAbsolutePath(fname) xl = WIN32OLE.new( Excel.Application ) book = xl.Workbooks.Open(filename) begin puts " h1 " + book.Name + " /h1 " #各シートの処理 book.Worksheets.each do |sheet| puts " h2 " + sheet.Name + " /h2 " #各行の処理 sheet.UsedRange.Rows.each do |row| #各セルの内容を配列に入れる record = [] row.Columns.each do |cell| record cell.Value end puts record.join end end ensure book.Close xl.Quit end excelファイルをgrep #! C \ruby-1.8\bin ####################################### # grepxls.rb エクセルファイルをgrepする # param1 ファイル名 # param2 grepする文字列 ####################################### require win32ole #パラメータ取得 fname = ARGV[0] str = ARGV[1] re = Regexp.new(str) def getAbsolutePath filename fso = WIN32OLE.new( Scripting.FileSystemObject ) return fso.GetAbsolutePathName(filename) end filename = getAbsolutePath(fname) xl = WIN32OLE.new( Excel.Application ) book = xl.Workbooks.Open(filename) begin #各シートの処理 book.Worksheets.each do |sheet| rownum = 0 #各行の処理 sheet.UsedRange.Rows.each do |row| rownum += 1 #各セルの内容を配列に入れる record = [] row.Columns.each do |cell| record cell.Value end #puts record.join(",") if record.join =~ re then puts book.Name + " " + sheet.Name + " " + rownum.to_s + " " + record.join end end end ensure book.Close xl.Quit end
https://w.atwiki.jp/ko-suke/pages/57.html
Rubyも始めてみた。 いまさら過ぎるけど、オブジェクト指向っていいかもとはじめて思った。
https://w.atwiki.jp/dungeonsofdredmor/pages/78.html
Ruby - 紅玉(ルビー) 制作物
https://w.atwiki.jp/hide1227/pages/19.html
JRubyとは JRuby の環境構築 JRuby On Railsの環境構築 JRoRアプリの作成 コアライブラリの利用 Javaライブラリの利用 JRoRアプリのTomcatへのデプロイ JRubyとは Javaで書かれたRubyの実行環境です。 JVM上で動くRubyのため両言語間のシームレスな連携を実現している点が特徴である。具体的にはRubyからJavaのオブジェクトにアクセスが可能となります。 逆にJavaからRubyにアクセスするためのAPIには、「JSR223」「BSF」などがあります。 母体となる言語は「Ruby」であり、まつもとゆきひろ氏により、1993/2/24に誕生しました。「気軽に使えて、柔軟に書ける、オブジェクト指向言語」です。 現在の最新ヴァージョンは、1.1.4 であり、Ruby 1.8.6に完全互換しています。 ◆Jruby公式サイト:http //jruby.codehaus.org/ 【参考文献】:『JRuby 徹底入門』 ◆サポートサイト:http ///www.sotechsha.co.jp/sp/645/ JRuby の環境構築 ◆JRubyに必要な環境 JDKのインストール インストールされていない方は、こちらよりJDKをダウンロードしインストーラに従いインストールしてください。ここではjdk1.6.0_06を使うものとして話を進めます。 ちなみに環境変数は、 JAVA_HOME=C \Program Files\Java\jdk1.6.0_06 とします。 Path=%JAVA_HOME%\bin;%Path%; (※もしOracleなどをインストールする場合は、Oracleのパスよりも前に%JAVA_HOME%\bin;を通してください。) ◆JRubyのインストール ・Windowsの場合は、zipを選択 ここから最新(jruby-bin-1.1.4.zip)をダウンロードし、zip解凍して環境変数を設定します。 ここでは例として以下の環境に展開しました。 C \jruby\jruby-1.1.4 環境変数の設定 JRubyは実は後述するRadRailsによる開発の場合、プラグインについてきます。なのでRadRailsで開発する場合には必ずしも必要がないでしょう。その場合は、実際の開発環境に合わせて設定してください。このモジュールを使うとした場合は以下のようにするといいでしょう。 JRUBY_HOME=C \jruby\jruby-1.1.4 Path=%Path%;%JRUBY_HOME%\bin; JRuby On Railsの環境構築 ◆あると便利なIDE環境 EclipseのRadRails 全部そろった「pleiades-all-in-one-ultimate_20081006.zip」がお勧めです。(=>ダウンロードはこちらから。Eclipse 3.4.1 Ganymedeのultimateがお勧めです。ちなみに3.3.1のほうにはultimateでも今回使いたいRadRailsのプラグインが入ってませんでした。。。) これを仕込めば自動的にJRubyのVMがプラグインとして付随してきます。 ここでは、eclipseの環境を以下とし、 C \eclipse\341 eclipseでのワークスペースを以下とします。 C \workspace\341 ここでRadRailsのプラグインが使用するRubyを選択できますが、付属のJRubyを使う場合、それは以下にあります。 C \eclipse\341\dropins\Aptana_RadRails\eclipse\plugins\org.jruby_1.1.0.5965_RC2p2 これを使用する場合、環境変数の設定は以下のようになるはずです。 JRUBY_HOME=C \eclipse\341\dropins\Aptana_RadRails\eclipse\plugins\org.jruby_1.1.0.5965_RC2p2 ◆Webサーバ 開発工期においてはスタンドアロンで開発機にあればいいだろう、リリースを踏まえた場合、他機に構築して使えるようにしておきたい。 開発時点では、自機にApacheかMongrelサーバをたてて使用する。後ほどRailsアプリをTomcatに配置して動かしてみようと思う。スタンドアロンでの動作確認が済み次第、リリースマシンを準備する。リリース時期にはWebサーバ+アプリサーバ機としてCentOSを用意する。 開発時期:開発機(192.168.1.52) Apache1.3,Tomcat5.5,Mongrel リリース時期:リリース機(192.168.1.40) Apache2.2.4,Tomcat5.5,Mongrel 開発機の準備には、個別にサーバを導入してもいいですが、そもそもRailsをやるかたは、InstantRailsがインストールされているのではないでしょうか。その場合は、Apacheなど特にヴァージョンにこだわりがなければそれを間借りしましょう。Mongrelの場合はちゃんと使用するRubyの環境に合わせてgem でインストールする必要があります。 C \jruby\jruby-1.1.4\lib\ruby\gems\1.8\gems もしくは、 C \eclipse\341\dropins\Aptana_RadRails\eclipse\plugins\org.jruby_1.1.0.5965_RC2p2\lib\ruby\gems\1.8\gems の内部を調べ、mongrelが入っていることを念のため確認しておきましょう。 Tomcatを準備していない方は、こちらよりダウンロードしてインストールしてください。 上記で紹介したeclipseにはTomcatのプラグインが入っているのでプロパティの設定でパスを合わせてください。もし後述のOracleXEをインストールする場合は、8080ポートを奪われないように、ここで立ち上げておいてください。 ◆DBサーバ 対応しているRDBMSは多い。ここでは Oracleを使ってみようと思う。デフォルトとはRails 1.2.3ではMySQLであり、Rails 2.0.2 ではSQLite3である。Oracleでの導入例の情報は少ないが、できるだけこの環境で構築してみたいと思う。またあわせて、MySQLの環境も構築できることを確認しておきたい。RailsはマルチDBの構築を目指しているが、それが実際のところ可能なのかをここで調査していきたい。 開発時期:開発機(192.168.1.52) Orcale10g XE リリース時期:リリース機(192.168.1.36) Orcale10g R02 まだDBを準備していない方は、開発機に使用する予定のOracleXEはこちらよりダウンロードしてインストールしてください。この時注意すべきは、後ほど使用する予定のTomcatとのポートのぶつかりあいです。これを避ける手軽な方法は、Tomcat5.5のほうを先にインストールしておき、起動して8080ポートをリスニング状態にしたうえで、OracleXEのインストーラを実行すれば、デフォルトは8081が指定されるでよう。 環境変数は ORACLE_SID=XE ユーザは開発用とテスト用と、あと念のためリリース用のスキーマを準備しましょう。Railsの場合DB作成までやってくれるToolがついていますが、Oracleの場合は3つのDBを作るよりも、3つのスキーマを作成するほうが現実的だと判断します。 dev01/oracle tes01/oracle pro01/oracle を作成します。 作業はインストールに成功していれば以下のURLでWebからできるでしょう。 http //127.0.0.1 8081/apex/ また、リリース機へのOracleの用意は別途行ってください。 リナックス機へのOracle製品のインストールはそれなりに複雑ですので、手順を踏まえないと失敗します。ここではインストールの詳細は触れませんが、後ほど『CentOS5へのOracle10gのインストールマニュアル』の記事を書く予定でいます。 DBサーバリリース機の情報 IPアドレス(例):192.168.1.36 ORACLE_SID=orcl dev01/oracle tes01/oracle pro01/oracle 操作は以下のWebToolが便利です。 http //192.168.1.36 5560/isqlplus/ ユーザ作成などの管理Toolは以下から作業するのがいいでしょう。 http //192.168.1.36 1158/em/ ユーザの作成 sys/xxxxx SYSDBA 管理=>ユーザの作成=>作成 スタンドアロンにしてもそうでないにしても、DBサーバを準備したら、次に OracleのClientを準備します。 ダウンロードはこちらから Instant Client アカウントの登録をすればダウンロード可能になる。 登録後、サイト登録を行い、ダウンロードページにてサインイン。 BASICとSDKだけでもいいらしいが、念のため全部ダウンロードする。 instantclient-basic-win32-10.2.0.3-20061115.zip instantclient-jdbc-win32-10.2.0.3-20061115.zip instantclient-odbc-win32-10.2.0.3-20061115.zip instantclient-sdk-win32-10.2.0.3-20061115.zip instantclient-sqlplus-win32-10.2.0.3-20061115.zip これを以下に解凍する。 C \MY\TOOL\EXT\instantclient_10_2 中にあるDDLファイル一覧 heteroxa10.dll oci.dll ocijdbc10.dll ociw32.dll orannzsbb10.dll oraocci10.dll oraociei10.dll Orasqlplusic10.dll sqora32.dll sqoras32.dll sqresja.dll sqresus.dll これを、%JRUBY_HOME%\bin以下に配置する。 C \eclipse\341\dropins\Aptana_RadRails\eclipse\plugins\org.jruby_1.1.0.5965_RC2p2\bin 次にRubyのバインディングのためのOracleのOCIドライバを準備します。 ダウンロードはRubyForgeから ruby-oci8-1.0.3-mswin32.rb C \eclipse\341\dropins\Aptana_RadRails\eclipse\plugins\org.jruby_1.1.0.5965_RC2p2\bin に配置します。 ダウンロードしたrbファイルを指定して任意のディレクトリでrubyコマンドの実行します。 C \eclipse\341\dropins\Aptana_RadRails\eclipse\plugins\org.jruby_1.1.0.5965_RC2p 2\bin jruby ruby-oci8-1.0.3-mswin32.rb This package is for i386-mswin32 install anyway? Enter Yes/No yes Copy OCI8.rb to C /eclipse/341/dropins/Aptana_RadRails/eclipse/plugins/org.jruby _1.1.0.5965_RC2p2/lib/ruby/site_ruby/1.8/DBD/OCI8 Copy oci8.rb to C /eclipse/341/dropins/Aptana_RadRails/eclipse/plugins/org.jruby _1.1.0.5965_RC2p2/lib/ruby/site_ruby/1.8 Copy oci8lib.so to C /eclipse/341/dropins/Aptana_RadRails/eclipse/plugins/org.jr uby_1.1.0.5965_RC2p2/lib/ruby/site_ruby/1.8/java OK? Enter Yes/No y Copying OCI8.rb to C /eclipse/341/dropins/Aptana_RadRails/eclipse/plugins/org.jr uby_1.1.0.5965_RC2p2/lib/ruby/site_ruby/1.8/DBD/OCI8 ... done Copying oci8.rb to C /eclipse/341/dropins/Aptana_RadRails/eclipse/plugins/org.jr uby_1.1.0.5965_RC2p2/lib/ruby/site_ruby/1.8 ... done Copying oci8lib.so to C /eclipse/341/dropins/Aptana_RadRails/eclipse/plugins/org .jruby_1.1.0.5965_RC2p2/lib/ruby/site_ruby/1.8/java ... done OK C \eclipse\341\dropins\Aptana_RadRails\eclipse\plugins\org.jruby_1.1.0.5965_RC2p 2\bin ◆超お手軽一括インストーラ BitNamiJRubyStack ダウンロード JRoRアプリの作成 アプリの作成はeclipse上のRadRailsで行おうと思う。今回はRubyではなくJRubyを使う点と、あらかじめ他のInstantRailsとかの開発環境が混じっているとgemなどで問題を生じるので、環境変数Pathを確認する。ここは念には念を。再確認します。 C \eclipse\341\dropins\Aptana_RadRails\eclipse\plugins\org.jruby_1.1.0.5965_RC2p 2\bin echo %Path% Path =C \oraclexe\app\oracle\product\10.2.0\server\bin;C \InstantRails20\mysql\b in;C \Program Files\Java\jdk1.6.0_06\bin;C \WINNT\system32;C \WINNT;C \WINNT\Sys tem32\Wbem;C \eclipse\341\dropins\Aptana_RadRails\eclipse\plugins\org.jruby_1.1. 0.5965_RC2p2\bin; プラグインのほうのJRubyが優先されていることを確認。(コンソールで作業するケースが出てきた場合にここが重要になる。) eclipseの設定の確認 プロジェクトの作成 プロジェクト名:JRoROra01 プロジェクトのソースの雛形を一括作成後、自動的にサーバが立ち上がっています。 http //127.0.0.1 3006/ まだ対応する画面もテーブルも作成していないので、Topページのみの動作確認です。 次に通常はDBを作成します。 たいていの場合は、「rake db create」にてDB自体を生成しますが、今回のOracleの場合は、この手順は割愛し、既存のインストール時のDBを使用することにします。 scaffoldします。 scaffold todo limit timestamp title string detail text MVCアーキテクチャの対応ソースが一気にでき、更にマイグレーションファイルもできあがっています。中身を確認します。 class CreateTodos ActiveRecord Migration def self.up create_table todos do |t| t.timestamp limit t.string title t.text detail t.timestamps end end def self.down drop_table todos end end 次にいよいよ、DBにテーブルを作成しますが、その前にDBへの接続条件を確認します。 development adapter oracle database 192.168.1.36/orcl username dev01 password oracle test adapter oracle database 192.168.1.36/orcl username tes01 password oracle production adapter oracle database 192.168.1.36/orcl username pro01 password oracle 念のためクライアントPCからDBサーバ側へSSH接続するなりして疎通確認を行います。特に1521番ポートは使用するので、ちゃんとポートがLISTENING状態であり、F/Wにおいても開放されていることを確認しておきます。 [root@vm36 ~]# ifconfig eth0 Link encap Ethernet HWaddr 00 0C 29 C8 19 70 inet addr 192.168.1.36 Bcast 192.168.1.255 Mask 255.255.255.0 ... [root@vm36 ~]# netstat -na | grep 1521 tcp 0 0 0.0.0.0 1521 0.0.0.0 * LISTEN tcp 0 0 127.0.0.1 31502 127.0.0.1 1521 ESTABLISHED ここで、db migrateを実行する。 コアライブラリの利用 あ Javaライブラリの利用 あ JRoRアプリのTomcatへのデプロイ あ
https://w.atwiki.jp/kmo2/pages/6.html
メニュー編集 文法関係 ◆お約束のHelloWorld ◆変数 ◆配列 ◆制御文 ◆関数 ◆yield ◆クラス ◆モジュール ライブラリとかTIPS ●整数型と文字型の変換 ●ディープコピー ●コマンドライン引数 文字列操作 ◆区切り文字で分割して配列に ◆置換 ファイル関係 ◆基本形~catコマンド~ リンク ◆関連リンク -
https://w.atwiki.jp/usapfrog/pages/13.html
参考リンク オブジェクト指向スクリプト言語 Ruby リファレンスマニュアル 逆引きRuby Exerbへようこそ 条件分岐 if condition statementelsif condition statementelse statementend 短いとき便利 statement if condtion 三項演算子も使用可能 var = condition ? x y ループ for i in 1..10 statement next if conditionend hoge.rb *.datとかやりたいときに for arg in ARGV print argend while condition1 statement break if condition2end ファイル読み書き fid = open("fielname", "r[b]")while line=fid.gets buf lineendfid.binmode # "rbなら不要"dats1=fid.read(4).unpack("i*");while bufs = fid.read(8*datasize) dats2 bufs.unpack("d*")endfid.close fid = open("fielname", "w[b]")fid.printf("var %d", var)fid.binmode # "wbなら不要"fout.write(varlist.pack("d*")); #intはi*, floatはf*fid.close packテンプレート文字列 EXE化 http //okazuki.hatenablog.com/entry/20070724/1185228812 exerbは出来たexeにファイルD DするときちんとファイルのパスがARGVに入ってくれる
https://w.atwiki.jp/linux-memo/pages/26.html
Ruby入門 UNIXプログラミング 「Ruby入門」 by 清川清 http //www.lab.ime.cmc.osaka-u.ac.jp/~kiyo/pub/lecture/unixpro/ruby/ まつもと直伝 プログラミングのオキテ 第0回 あらためてRuby入門(実装とRuby誕生の秘密) http //itpro.nikkeibp.co.jp/article/COLUMN/20070725/278245/ Ruby入門 http //www.rubylife.jp/ini/ Ruby入門 http //www.jaist.ac.jp/~m-hatake/ruby/ 数学のためのRuby入門 このサイトは、プログラミング初心者にスクリプト言語Rubyを使えるようになってもらうことを目的としています。多くの入門書や解説ページと違い、プログラミングの主眼を数学に置いています。 http //www.altum.jp/math/ruby/
https://w.atwiki.jp/socup/pages/127.html
逆引きRuby 非常に役に立つ http //www.namaraii.com/rubytips/ 出力 p "test" コマンドラインからの入力 ARGV[0] ファイルを読み込む f = open("hoge") g = f.read p g f.close 置換する h = g.gsub("a","b") p h 例 preText.each_line {|line| line.sub!(/parseInt/,""); line.sub!( / \( (.*) \) /x, \1 ) outText = outText + line } 正規表現
https://w.atwiki.jp/danball-stickranger/pages/142.html
Ruby 効果 Lv.1 Add 1-2 fire damage Lv.2 Add 3-4 fire damage 解説 火のダメージが増える。 火のダメージは基本的に低い。安定しているのでぜひ付けよう。 fire swordやvolcanoなどにつけるといい。